package org.example.sort;

public class ThirdMax {
    /**
     * 给你一个非空数组，返回此数组中 第三大的数 。如果不存在，则返回数组中最大的数。
     *
     * @param nums
     * @return
     */
    public int thirdMax(int[] nums) {
        // Set<Integer> set =new HashSet<>();
        // for(int num:nums){
        //     set.add(num);
        // }
        // Integer[] ret =set.toArray(new Integer[0]);
        // Arrays.sort(ret);
        // return ret.length<3?ret[ret.length-1]:ret[ret.length-3];
        long first = Long.MIN_VALUE;  // 最大值
        long second = Long.MIN_VALUE; // 第二大值
        long third = Long.MIN_VALUE;  // 第三大值

        for (int num : nums) {
            if (num > first) {
                third = second;
                second = first;
                first = num;
            } else if (num > second && num < first) {
                third = second;
                second = num;
            } else if (num > third && num < second) {
                third = num;
            }
        }

        return third == Long.MIN_VALUE ? (int)first : (int)third;
    }
}
